// commonjs 五种引入模式
// 1. 引入自己编写的模块
// const data = require('./test.js')
// console.log('data',data)

// 2. 引入第三方模块
// const md5 = require('md5')
// console.log('md5',md5('12345')) // 827ccb0eea8a706c4c34a16891f84e7b

// 3. node 内置模块 fs http net os child_process
// const fs = require('node:fs')  // 高版本node:fs 低版本fs
// console.log('fs',fs)

// 4. c++ 拓展 addon napi node-gyp .node

// 5. 引入 json 文件
// const data = require('./test.json')
// console.log('data',data)

// module 引入模式
import obj,{ name } from './test.js'
console.log('obj',obj, name)

/**
 * commonjs 和 esm 的区别
 * Cjs是基于运行时的同步加载，esm是基于编译时的异步加载
 * Cjs是可以修改值的，esm值并且不可修改（可读的）
 * Cjs不可以tree shaking，esm支持tree shaking
 * commonjs中顶层的this指向这个模块本身，而ES6中顶层this指向undefined
*/
